﻿Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be

Partial Class mantenedores_adicional
    Inherits System.Web.UI.Page
    Implements System.Web.UI.ICallbackEventHandler
    Private proyectos As List(Of Eproyecto) = Nothing
    Private tpoAdicionales As List(Of Eadicionales) = Nothing
    Private adicionales As List(Of Eadicionales) = Nothing

#Region "          Formulario                               "
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        If Not IsPostBack Then
            cargarProyecto()
            cargarTpoAdicional()
            'cargarLista()
        End If
        '***********************************************************'
        btnAgregar.Attributes.Add("onclick", "jMuestraPanel(); return false;")
        Dim cbReference As String
        cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "null", True)
        Dim callbackScript As String = ""
        callbackScript &= "function CallTheServer(arg)" & _
                          "{" & cbReference & "; }"

        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "CallTheServer", callbackScript, True)
    End Sub
    Private Function cargarLista() As String
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)
        adicionales = Radicionales.SeleccionarTodo(Me.Master.descEmpresa, False)
        Session("lista") = adicionales
        Me.gvwLista.DataSource = adicionales
        Me.gvwLista.DataBind()
        Me.gvwLista.RenderControl(htm)
        htm.Flush()
        Return sr.ToString()
    End Function
    Private Sub cargarProyecto() 'JF
        proyectos = Radicionales.SeleccionarProyecto(Me.Master.descEmpresa, True)
        selProyecto.DataSource = proyectos
        selProyecto.DataTextField = "descProyecto"
        selProyecto.DataValueField = "idProyecto"
        selProyecto.DataBind()
    End Sub
    Private Sub cargarTpoAdicional() 'JF
        tpoAdicionales = Radicionales.SeleccionarTpoAdicional(Me.Master.descEmpresa, True)
        selTipoAdicional.DataSource = tpoAdicionales
        selTipoAdicional.DataTextField = "tituloAdicional"
        selTipoAdicional.DataValueField = "idAdicional"
        selTipoAdicional.DataBind()
    End Sub

    Private Sub cargarEstado()
        Dim Eestado As New Ecommons
        selEstado.DataSource = Eestado.estado
        selEstado.DataTextField = "descripcion"
        selEstado.DataValueField = "codigo"
        selEstado.DataBind()
    End Sub
    Protected Sub gvwLista_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles gvwLista.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Private Function obttenerEdit(ByVal pLadicionales As System.Linq.IOrderedEnumerable(Of Eadicionales)) As String
        Dim datos As New StringBuilder
        datos.Append(pLadicionales.ElementAt(0).idAdicional.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).tituloAdicional.Trim + "|")
        datos.Append(pLadicionales.ElementAt(0).monto.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).descAdicional.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).descProyecto.ToString + "|")
        'datos.Append(pLadicionales.ElementAt(0).codAdicional.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).idProyecto.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).tipoAdicional.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).tipoCasa.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).codAdicional.ToString + "|")
        datos.Append(pLadicionales.ElementAt(0).estado.Trim)
        Return datos.ToString()
    End Function
#End Region

#Region "          CallBack                                 "
    Private _callbackArgument As String
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return _callbackArgument
    End Function
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Try
            If eventArgument <> String.Empty Then
                Dim varParams() As String = eventArgument.Split("@")
                Dim sr As New System.IO.StringWriter()
                Dim htm As New HtmlTextWriter(sr)
                _callbackArgument = ""
                Select Case varParams(0)
                    Case "divgvwLista"
                        _callbackArgument = varParams(0).ToString + "|" + cargarLista()
                    Case "divddlEstado"
                        Dim Eestado As New Ecommons
                        Me.selEstado.DataSource = Eestado.estado
                        Me.selEstado.DataTextField = "descripcion"
                        Me.selEstado.DataValueField = "codigo"
                        Me.selEstado.DataBind()
                        Me.selEstado.RenderControl(htm)
                        htm.Flush()
                        _callbackArgument = varParams(0).ToString + "|" + sr.ToString()
                    Case "divGuardar"
                        Dim estado As String = CType(varParams(1), String)
                        Dim pAdicional As Eadicionales = Nothing
                        If estado.Equals("nuevo") Then
                            pAdicional = New Eadicionales
                            With pAdicional
                                .codAdicional = UCase(CType(varParams(3), String).ToUpper.Trim)
                                .tituloAdicional = UCase(CType(varParams(4), String).ToUpper.Trim)
                                .tipoAdicional = CType(varParams(5), String).ToUpper.Trim
                                .descAdicional = CType(varParams(6), String).ToUpper.Trim
                                .monto = CType(varParams(7), Decimal)
                                .idProyecto = CType(varParams(8), Integer)
                                .estado = CType(varParams(9), String).ToUpper.Trim
                                .idUsuario = Me.Master.idUsuario
                                .tipoCasa = CType(varParams(10), String).ToUpper.Trim
                            End With
                            If Radicionales.Añadir(Me.Master.descEmpresa, pAdicional) Then
                                _callbackArgument = varParams(0).ToString + "|divGuardar|True|" + cargarLista()
                            Else
                                _callbackArgument = varParams(0).ToString + "|divGuardar|False"
                            End If
                        Else
                            pAdicional = New Eadicionales
                            With pAdicional
                                .idAdicional = CType(varParams(2), Int32)
                                .codAdicional = CType(varParams(3), String).ToUpper.Trim
                                .tituloAdicional = CType(varParams(4), String).ToUpper.Trim
                                .tipoAdicional = CType(varParams(5), String).ToUpper.Trim
                                .monto = CType(varParams(7), Decimal)
                                .descAdicional = CType(varParams(6), String)
                                .idProyecto = CType(varParams(8), Integer)
                                .estado = CType(varParams(9), String).ToUpper.Trim
                                .idUsuario = Me.Master.idUsuario
                                .tipoCasa = CType(varParams(10), String).ToUpper.Trim
                            End With
                            If Radicionales.Editar(Me.Master.descEmpresa, pAdicional) Then
                                _callbackArgument = varParams(0).ToString + "|divModificar|True|" + cargarLista()
                            Else
                                _callbackArgument = varParams(0).ToString + "|divModificar|False"
                            End If
                        End If
                    Case "divShowDet"
                        Dim id As Int32 = CType(varParams(1), Int32)
                        adicionales = Session("lista")
                        _callbackArgument = "detalle|divShowDet|Descuento [Modificar]|" + obttenerEdit(From c In adicionales _
                                                                                                    Where c.idAdicional = id _
                                                                                                    Select c _
                                                                                                    Order By c.idAdicional)
                    Case "divDelete"
                        Dim pAdicional As New Eadicionales
                        With pAdicional
                            .idAdicional = CType(varParams(1), Int32)
                            .idUsuario = Me.Master.idUsuario
                        End With
                        Radicionales.Eliminar(Me.Master.descEmpresa, pAdicional)
                        _callbackArgument = "divgvwLista|" + cargarLista()
                    Case "divBuscar"
                        Dim pDscto As New Eadicionales With {.filtro = varParams(1).ToUpper.Trim}
                        adicionales = Radicionales.Buscar(Me.Master.descEmpresa, False, pDscto)
                        Session("lista") = adicionales
                        Me.gvwLista.DataSource = adicionales
                        Me.gvwLista.DataBind()
                        Me.gvwLista.RenderControl(htm)
                        htm.Flush()
                        _callbackArgument = "divgvwLista|" + sr.ToString()
                    Case "divExcel"
                        adicionales = Session("lista")
                        Me.gvwLista.DataSource = adicionales
                        Me.gvwLista.DataBind()
                        Me.gvwLista.RenderControl(htm)
                        htm.Flush()

                        Dim sd As New StringBuilder
                        sd.Append("<TABLE id=idTable cols=3 name=idTable>")
                        sd.Append("<TR>")
                        sd.Append("<TH>Titulo 1</TH>")
                        sd.Append("<TH>Titulo 2</TH>")
                        sd.Append("<TH>Titulo 3</TH>")
                        sd.Append("</TR>")
                        sd.Append("<TR><TD>Celda 1</TD><TD>Celda 5</TD><TD>Celda 5</TD></TR>")
                        sd.Append("<TR><TD><b>Celda 2</b></TD><TD>Celda 6</TD><TD>Celda 5</TD></TR>")
                        sd.Append("<TR><TD>Celda 3</TD><TD>Celda 7</TD><TD>Celda 5</TD></TR>")
                        sd.Append("<TR><TD>Celda 4</TD></TR>")
                        sd.Append("</TABLE>")
                        _callbackArgument = "divgvwLista|divExcel|" + sd.ToString()

                End Select
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
#End Region

End Class
